import Request from './luch-request/index.js'
const http = new Request();
import CONFIG from '../config/index.js'
import qs from 'qs'
import {
	getToken
} from '../storage/index.js'
import {
	showCorrect,
	showError,
	showLoading
} from '../toast/index.js'
http.setConfig((config) => { /* config 为默认全局配置*/
	config.baseUrl = CONFIG.BACK_URL; /* 根域名 */
	config.header = {
		a: 1, // 演示用
		b: 2 // 演示用
	}
	config.timeout = 5000
	return config
})


http.interceptor.request((config, cancel) => { /* cancel 为函数，如果调用会取消本次请求。需要注意：调用cancel,本次请求的catch仍会执行。必须return config */
	//如果POST需要显示Loading
	if (config.method === 'POST' && config.data ) {
		if(config.data.Loading){
			showLoading()
		}
		if(!config.data.Json){ //不是JSON
			config.header['Content-Type'] = 'application/x-www-form-urlencoded'
			config.data = qs.stringify(config.data)
		}else{ //默认JSON
			config.data = JSON.stringify(config.data)
		}
	}
	
	const YF_TOKEN = getToken()
	config.header = {
		...config.header,
		'YF-TOKEN': YF_TOKEN // 演示拦截器header加参
	}
	return config
})

http.interceptor.response((response) => { /* 对响应成功做点什么 （statusCode === 200），必须return response*/
	// console.log(response.data.code == CONFIG.RES_OK)
	if (response.data.code == CONFIG.RES_OK) {
		uni.hideLoading();
		return response.data
	} else if (response.data.code == CONFIG.RES_ERROR) {
		showError(response.data.msg)
		return Promise.reject(response.data.msg)
	} else if (response.data.code == CONFIG.RES_AUTH) {
		return Promise.reject("请先登录!");
	} else {
		showError('未知错误: ' + response.data.code)
		Promise.reject("未知业务错误,联系管理员!" + response.data.code);
	}
}, (response) => { /*  对响应错误做点什么 （statusCode !== 200），必须return response*/
	return response
})
export default http